<?php
declare(strict_types=1);

namespace app\common\middleware;

use Closure;
use think\Request;
use think\facade\Cache;


class ProtectPermission
{
    use \app\common\traits\Base;

    public function handle(Request $request, \Closure $next,int $expire = 8, string $cacheKeyPrefix = 'protectpermission')
    {
        echo 'qwer';
        exit;
        // 获取客户端IP和请求路径
        $ip = $request->ip();
        $path = $request->pathinfo();
        
        // 获取限制访问的IP列表
       // $refuseips = Config::get('refuseips', []);
        $refuseips = config('refuseips',[]);
        // 生成缓存键
        $cacheKey = $cacheKeyPrefix . md5($path . $ip);
        $expireKey = $cacheKey . '_expire';
        
        // 获取上次访问时间
        $lastRequestTime = Cache::get($expireKey, 0);
        
        // 计算与上次访问时间的间隔
        $interval = time() - $lastRequestTime;

        // 如果IP在限制列表中
        if (in_array($ip, $refuseips)) {
            return $this->json('IP已被限制', 999);
        }

        // 如果在限制时间内再次访问
        if ($interval < $expire) {
            return $this->json('请求过于频繁！', 999);
        }

        // 更新上次访问时间
        Cache::put($expireKey, time(), $expire);

        return $next($request);
    }
    

    // // 统一的JSON响应方法
    // private function json($message, $code)
    // {
    //     return Response::json(['message' => $message, 'code' => $code]);
    // }
  

}